(try_window_id): Avoid starting to display in the moddle
authorGerd Moellmann <gerd@gnu.org>
Mon, 27 Nov 2000 12:12:14 +0000 (12:12 +0000)
committerGerd Moellmann <gerd@gnu.org>
Mon, 27 Nov 2000 12:12:14 +0000 (12:12 +0000)
of a character, a TAB for instance.  This is easier than to set
up the iterator exactly, and it's not a frequent case, so the
additional effort wouldn't really pay off.

src/xdisp.c

index 6cec77609265a11677fff61ddf9b4d8920fce642..16ac7dba3183ca6fc7c3dea8acb5bbae1195df1f 100644 (file)
@@ -10767,6 +10767,17 @@ try_window_id (w)
   last_unchanged_at_beg_row = find_last_unchanged_at_beg_row (w);
   if (last_unchanged_at_beg_row)
     {
+      /* Avoid starting to display in the moddle of a character, a TAB
+        for instance.  This is easier than to set up the iterator
+        exactly, and it's not a frequent case, so the additional
+        effort wouldn't really pay off.  */
+      while (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P (last_unchanged_at_beg_row)
+            && last_unchanged_at_beg_row > w->current_matrix->rows)
+       --last_unchanged_at_beg_row;
+
+      if (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P (last_unchanged_at_beg_row))
+       return 0;
+      
       init_to_row_end (&it, w, last_unchanged_at_beg_row);
       start_pos = it.current.pos;